import { login, logout, tempTokenGetToken } from '@/api/login'
import { getToken, setToken, removeToken } from '@/utils/auth'

const useUserStore = defineStore(
  'user',
  {
    state: () => ({
      token: getToken(),
      id: '',
      phone: '',
      avatar: '',
      roles: [],
      createTime: '',
      departmentName: '',
      realName: '',
      createBy: '',
      permissions: [],
      deptName: '',
      isMultipleDept: false,
      createName: '',
      deptId: ''
    }),
    actions: {
      // 登录
      login(userInfo) {
        const username = userInfo.username.trim()
        const password = userInfo.password
        const code = userInfo.code
        const uuid = userInfo.uuid
        return new Promise((resolve, reject) => {
          login(username, password, code, uuid).then(res => {
            if (res.data?.token) {
              setToken(res.data.token)
              this.token = res.data.token
            }

            resolve(res.data)
          }).catch(error => {
            reject(error)
          })
        })
      },
      // 退出系统
      logOut() {
        return new Promise((resolve, reject) => {
          logout(this.token).then(() => {
            this.clearInfo()
            resolve()
          }).catch(error => {
            reject(error)
          })
        })
      },
      // 需要选择机构
      selectOrganization(data) {
        return new Promise((resolve, reject) => {
          tempTokenGetToken(data).then(res => {
            console.log('选择机构成功', res)
            setToken(res.data.token)
            this.token = res.data.token
            resolve()
          }).catch(error => {
            reject(error)
          })
        })
      },
      // 获取用户信息
      // getInfo() {
      //   return new Promise((resolve, reject) => {
      //     getInfo().then(res => {
      //       console.log("获取用户信息")
      //       const user = res.user
      //       // const avatar = (user.avatar == "" || user.avatar == null) ? defAva : import.meta.env.VITE_APP_BASE_API + user.avatar;

      //       // if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组
      //       //   this.roles = res.roles
      //       //   this.permissions = res.permissions
      //       // } else {
      //       //   this.roles = ['ROLE_DEFAULT']
      //       // }
      //       this.permissions = ["*:*:*"]
      //       this.roles = ['ROLE_DEFAULT']
      //       this.id = user.userId
      //       this.phone = user.userName
      //       // this.avatar = avatar
      //       this.createTime = user.createTime
      //       this.departmentName = user.departmentName
      //       this.realName = user.realName
      //       this.createBy = user.createBy
      //       this.deptName = user.deptName
      //       this.isMultipleDept = !!user.isMultipleDept
      //       this.createName = user.createName
      //       this.deptId = user.deptId
      //       resolve(res)
      //     }).catch(error => {
      //       reject(error)
      //     })
      //   })
      // },
      // 退出系统
      // logOut() {
      //   return new Promise((resolve, reject) => {
      //     logout(this.token).then(() => {
      //       this.clearInfo()
      //       resolve()
      //     }).catch(error => {
      //       reject(error)
      //     })
      //   })
      // },
      clearInfo() {
        this.permissions = []
        this.roles = []
        this.id = ''
        this.phone = ''
        this.avatar = ''
        this.createTime = ''
        this.departmentName = ''
        this.realName = ''
        this.createBy = ''
        this.deptName = ''
        this.isMultipleDept = false
        this.createName = ''
        this.deptId = ''
        removeToken()
      }
    }
  })

export default useUserStore
